// 内置模块:fs
// fs -> file system 用于与文件系统交互
// fs模块提供了操作文件的两种类型方法:异步方法和同步方法
// 同步方法: 异步方法后面加Sync

// 加载模块
let fs = require('fs')

// 异步读取文件
// fs.readFile(path,[option],callback)
// path 要读取文件的路径
// option 一些配置信息,可选参数
// callback 读取完成后执行的回调函数
console.log( '任务1' )
// fs.readFile('./test.txt',(err,data)=>{
fs.readFile('./test.txt','utf8',(err,data)=>{
    // err 读取失败时为一个错误对象,读取成功时为null
    // data 读取成功时文件的数据
    if (err) {
        console.log( '读取失败',err )
    } else {
        console.log( '读取成功' )
        console.log( data )// <Buffer e6 88 91 e4 bb 8a e5 a4 a9 e5 b0 b1 e6 98 af e8 a6 81 e5 b8 a6 e5 a5 b9 e8 b5 b0 ef bc 8c e6 88 91 e7 9c 8b e5 93 aa e4 b8 aa e6 95 a2 e6 8b a6 e6 88 ... 4 more bytes>
        // Buffer 是nodejs中的二进制数据流
        console.log( data.toString() )// '我今天就是要带她走，我看哪个敢拦我...'
    }
})
console.log( '任务2' )


// 同步读取文件
// console.log( '任务1' )
// try{
//     let data = fs.readFileSync('./test1.txt','utf8')
//     console.log( data )// 我今天就是要带她走，我看哪个敢拦我...
// }catch(err){
//     console.log( err )
// }
// console.log( '任务2' )


// 异步写文件(如果文件不存在,会自动创建文件)
// fs.writeFile(path,data,[option],callback) 会覆盖原来的数据
// path 要写入文件的路径
// data 要写入的数据
// option 一些配置信息,可选
// callback 写入完成后执行的回调函数
// fs.writeFile('./test.txt','欲买桂花同载酒，荒泷天下第一斗',(err)=>{
//     // err 如果写入成功为null,如果写入失败为错误对象
//     if (err) {
//         console.log( '写入失败' )
//     } else {
//         console.log( '写入成功' )
//     }
// })

// 异步添加数据,不会覆盖原来的数据
// fs.appendFile('./test.txt',',朝星空直接伸出手去，你永远只会觉得星星遥不可及，不是吗？',(err)=>{
//     if (err) {
//         console.log( '写入失败' )
//     } else {
//         console.log( '写入成功' )
//     }
// })


// 异步删除文件
// fs.unlink('./test.txt',(err)=>{
//     if (err) {
//         console.log( '删除失败' )
//     } else {
//         console.log( '删除成功' )
//     }
// })


// 异步创建文件夹
// fs.mkdir('./hehe',(err)=>{
//     if (err) {
//         console.log( '创建失败' )
//     } else {
//         console.log( '创建成功' )
//     }
// })


// 异步读取文件夹
// fs.readdir('./',(err,data)=>{
//     if (err) {
//         console.log( '读取失败' )
//     } else {
//         console.log( '读取成功' )
//         console.log( data )// ['文件1','文件2'....]
//     }
// })

